events
.NET 9.0.100 から .NET 10.0.100 以降の Razor の破壊的変更
このドキュメントでは、.NET 9 の一般リリース (.NET SDK バージョン 9.0.100) から .NET 10 一般リリース (.NET SDK バージョン 10.0.100) までの Razor の既知の破壊的変更を示します。
VS 17.13p1 および .NET 9.0.200 で導入されました
Razor ファイル内の C# セクションを理解するための新しい字句モードが導入されました。これにより、C# がネイティブに字句化される方法との互換性が向上しました。 ただし、これは、以前は一貫して機能していなかった C# 前処理ディレクティブに対する Razor コンパイラの理解に重大な変更をもたらします。 ディレクティブは、Razor ファイル内の行の先頭から開始する必要があります (その前に空白文字のみを使用できます)。 さらに、プリプロセッサ ブロック #if
非アクティブと見なされたときに、無効になっているセクションが Razor コンパイラによって適切に無効になりました。
@{ #if DEBUG /* Previously allowed, now triggers RZ1043 */ }
<div>test</div>
@{ #endif /* Previously allowed, now triggers RZ1043 */ }
修正するには、ディレクティブを新しい行に移動します。 ディレクティブの前には空白のみを使用できます。
@{
#if DEBUG /* This is allowed */
}
<div>test</div>
@{
#endif /* This is allowed */
}
無効なブロックは Razor コンパイラによって完全に無効と見なされ、ブロックを理解しようとはなっていません。 前の中断と組み合わせると、 #else
、 #elif
、または #endif
が行の先頭になかった場合 (剰余空白)、ファイルの大きなセクションが古いバージョンの Razor コンパイラよりも無効と見なされることを意味します。 ここで発生する可能性のある中断を診断するために、Razor コンパイラは無効なテキスト セクションをスキャンして、プリプロセッサ ディレクティブが正しく配置されていない可能性があるかどうかを確認し、検出された場合は警告を報告します。
@{
#if false
}
This area is now properly considered disabled by the razor compiler, and no attempt to understand it as either C# or HTML is made. This
can cause changes to how the output is rendered from previous versions of the Razor compiler.
@{ #else
In previous versions of the Razor compiler, this directive would have been picked up. It is no longer picked up because it is not at
the start of a line. The Razor compiler will report a warning, RZ1044, to help diagnose any potential breaks in this area.
}
@{
#endif
}
ASP.NET Core に関するフィードバック
ASP.NET Core はオープンソース プロジェクトです。 フィードバックを提供するにはリンクを選択します。
その他のリソース
トレーニング
モジュール
Blazor Web アプリを使ってリッチな対話型コンポーネントを構築する - Training
Blazor アプリを JavaScript コードと相互運用し、テンプレート化されたコンポーネントを使用し、コンポーネント ライフサイクル イベントを処理する方法について学習します。
ドキュメント
-
.NET 8 の最初のリリース以降の重大な変更について説明します。
-
ASP.NET Core の Razor Pages を使用して、ページのコーディングに重点を置いたシナリオをより簡略化して、MVC を使用する場合よりも生産性を高める方法について説明します。
-
コントローラー、ビュー、Razor Pages などを ASP.NET Core のアプリケーション パーツと共有する
コントローラー、ビュー、Razor Pages などを ASP.NET Core のアプリケーション パーツと共有する